package com.springboot_gradrecruit.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.springboot_gradrecruit.common.PageResponse;
import com.springboot_gradrecruit.common.R;
import com.springboot_gradrecruit.model.dto.bulletin.AddBulletinRequest;
import com.springboot_gradrecruit.model.dto.bulletin.PageBulletinRequest;
import com.springboot_gradrecruit.model.dto.bulletin.UpdateBulletinRequest;
import com.springboot_gradrecruit.model.entity.Bulletin;
import com.springboot_gradrecruit.model.vo.bulletin.BulletinVO;
import org.springframework.stereotype.Service;

/**
* @author zr
* @description 针对表【bulletin】的数据库操作Service
* @createDate 2024-12-19 09:37:55
*/
/**
 * 公告服务接口，继承自通用的 IService 接口。
 * 提供公告相关的业务操作，如添加、分页查询和更新公告。
 */
@Service
public interface BulletinService extends IService<Bulletin> {

    /**
     * 添加公告。
     *
     * @param addBulletinRequest 包含公告信息的请求对象，用于传递添加公告所需的数据。
     * @return 返回新添加公告的 ID，用于标识新增的公告。
     */
    Long addBulletin(AddBulletinRequest addBulletinRequest);

    /**
     * 分页查询公告。
     *
     * @param pageBulletinRequest 包含分页查询条件的请求对象，如页码、每页大小、搜索关键词等。
     * @return 返回一个 PageResponse 对象，包含分页查询结果和分页信息。
     *         其中，分页结果以 BulletinVO（公告值对象）的形式返回，
     *         用于封装公告的基本信息，适合前端展示。
     */
    PageResponse<BulletinVO> pageBulletin(PageBulletinRequest pageBulletinRequest);

    /**
     * 根据 ID 更新公告。
     *
     * @param updateBulletinRequest 包含公告更新信息的请求对象，包括公告 ID 和需要更新的字段。
     * @return 返回一个布尔值，表示更新操作是否成功。
     */
    boolean updateBulletinById(UpdateBulletinRequest updateBulletinRequest);
}
